//#############################################################################
//
//! \file  Application\app.c
//!
//! \brief  application
//
//  Author:
//  Group:          C2000
//  Target Device:  TMS320F2802x
//
//  (C) Copyright 2014, Texas Instruments, Inc.
//#############################################################################
// $TI Release: f2802x Support Library v210 $
// $Release Date: Mon Sep 17 09:13:31 CDT 2012 $
//#############################################################################

// **************************************************************************
// the includes
#include "Application/app.h"


// **************************************************************************
// the defines


// **************************************************************************
// the globals


// **************************************************************************
// the functions

//! \brief     LED Control
//! \param[in] None
//! \param[out] None
//void LED_Control(void)
//{
//	LED_on(LED1);
//    Delay(1000000L);
//    LED_off(LED1);
//    Delay(1000000L);
//
////    LED_on(LED2);
////    Delay(1000000L);
////    LED_off(LED2);
////    Delay(1000000L);
////
////    LED_on(LED3);
////    Delay(1000000L);
////    LED_off(LED3);
////    Delay(1000000L);
////
////    LED_on(LED4);
////    Delay(1000000L);
////    LED_off(LED4);
////    Delay(1000000L);
//
//
//}



//void LED_Control1(void)
//{
//
//	unsigned char i;
//	for(i=0;i<4;i++)
//	{
//		LED_on(LED[i]);
//		Delay(1000000L);
//		LED_off(LED[i]);
//	    Delay(1000000L);
//	}
//}
/*
 * pid参数初始化函数
 */
void PID_init(void)
{
    kp = 200;
    ki = 10;
    kd = 0;
    error = 0;
    error_last = 0;
    error_last2 = 0;
    umax = 144;  //248
    umin = -144;
    integral = 0;

}
/*
 * pid算法控制部分
 */
void PID_Concrol(void)
{
   // int index;
    error = Rotate_set - Rotate_rate;
  /*  if(Rotate_rate>umax)  //灰色底色表示抗积分饱和的实现
    {
      if(error<0)
      {
         integral+=error;
      }
    }
    else if(Rotate_rate<umin)
    {
      if(error>0)
      {
         integral+=error;
       }
     }
     else
     {
       integral+=error;
     }*/
    pwm = pwm + kp*(error-error_last)+ki*error+kd*(error-2*error_last+error_last2);
     //pwm=kp*error+ki*integral+kd*(error-error_last);
     if(pwm>60000-1){
         pwm = 59000;
     }
     myCmpA1 = pwm;
     error_last = error;
     error_last2 = error_last;
}
//if(Rotate_rate>umax)  //灰色底色表示抗积分饱和的实现
//        {
//           if(abs(error)>200)      //蓝色标注为积分分离过程
//            {
//                index=0;
//            }else{
//                index=1;
//                if(error<0)
//                {
//                  integral+=error;
//                }
//            }
//        }else if(Rotate_rate<umin){
//            if(abs(error)>200)      //积分分离过程
//            {
//                index=0;
//            }else{
//                index=1;
//                if(error>0)
//                {
//                 integral+=error;
//                }
//            }
//        }else{
//            if(abs(error)>200)                    //积分分离过程
//            {
//                index=0;
//            }else{
//                index=1;
//                integral+=error;
//            }
//        }
//
//        pwm=kp*error+index*ki*integral+kd*(error-error_last);




// end of file
